// package com.liangtian.mdm.material.service.impl;
//
// import java.io.File;
// import java.io.FileInputStream;
// import java.io.FileOutputStream;
// import java.io.InputStream;
// import java.util.ArrayList;
// import java.util.HashMap;
// import java.util.List;
// import java.util.Map;
// import java.util.StringTokenizer;
// import java.util.regex.Matcher;
// import java.util.regex.Pattern;
//
// import javax.servlet.http.HttpServletRequest;
//
// import org.springframework.beans.factory.annotation.Autowired;
// import org.springframework.stereotype.Service;
//
// import com.github.pagehelper.PageHelper;
// import com.github.pagehelper.PageInfo;
// import com.liangtian.mdm.base.utils.ShiroSessionUtils;
// import com.liangtian.mdm.material.dao.WlwlTzlUpdateDao;
// import com.liangtian.mdm.material.dao.WlwlUpdateDao;
// import com.liangtian.mdm.material.model.WlwlTzlUpdate;
// import com.liangtian.mdm.material.model.WlwlUpdate;
// import com.liangtian.mdm.material.service.WlwlUpdateService;
// import com.liangtian.mdm.system.sysFile.model.SysFile;
// import com.liangtian.mdm.system.sysFile.model.SysFileUpdate;
// import com.liangtian.mdm.system.sysFile.service.SysFileService;
// import com.liangtian.mdm.system.sysFile.service.SysFileUpdateService;
// import com.liangtian.mdm.system.user.model.SysUser;
// import com.liangtian.mdm.util.ConstantBean;
//
// @Service
// public class WlwlUpdateServiceImpl implements WlwlUpdateService {
//
//     @Autowired
//     private WlwlUpdateDao wlwlUpdateDao;
//     @Autowired
//     private WlwlTzlUpdateDao wlwlTzlUpdateDao;
//     @Autowired
//     private SysFileService sysFileService;
//     @Autowired
//     private SysFileUpdateService sysFileUpdateService;
//
//     // Session中保存的当前登录用户的信息
//     //@Value("${ConstantBean.CURRENT_SESSION_USER}")
//     //private String ConstantBean.CURRENT_SESSION_USER;
//
//     @SuppressWarnings({"unchecked", "rawtypes"})
//     @Override
//     public PageInfo weiHuWlwlUpdatePage(Map<String, Object> map) {
//         PageInfo<List<WlwlUpdate>> pageInfo = null;
//         try {
//             Object pNo = map.get("pageNum");
//             int pageNum, pageSize;
//             // export
//             if (pNo != null && !"NaN".equals(pNo)) {
//                 pageNum = Integer.parseInt(pNo.toString());// 页码
//             } else {
//                 pageNum = 1;
//             }
//             // pageSize=0时不分页
//             pageSize = Integer.parseInt(map.get("limit").toString());// 模型定义页面要显示数据条数
//             // 例如
//             // 10,20,50,100
//             PageHelper.startPage(pageNum, pageSize);// 开始分页标志（当前页，显示条数）
//             List<WlwlUpdate> list = wlwlUpdateDao.weiHuWlwlUpdatePage(map);
//             pageInfo = new PageInfo(list);
//         } catch (Exception e) {
//             e.printStackTrace();
//         }
//         return pageInfo;
//     }
//
//     @Override
//     public Map<String, Object> getWlwlUpdateById(WlwlUpdate update) {
//         return wlwlUpdateDao.getWlwlUpdateById(update);
//     }
//
//     @Override
//     public int deleteWlwlUpdateByIdS(Map<String, Object> map) {
//         return wlwlUpdateDao.deleteWlwlUpdateByIdS(map);
//     }
//
//     @Override
//     public int insertWlwlUpdate(Map<String, Object> cond) {
//         SysUser user = ShiroSessionUtils.getSessionSysUser(ConstantBean.CURRENT_SESSION_USER);
//         cond.put("creator_id", String.valueOf(user.getUserId()));
//         cond.put("creator_name", user.getUserName());
//         return wlwlUpdateDao.insertWlwlUpdate(cond);
//     }
//
//
//     @SuppressWarnings({"unchecked", "rawtypes"})
//     @Override
//     public PageInfo wlwlbianGeng(Map<String, Object> cond) {
//         PageInfo pageInfo = null;
//         try {
//             /*
//              * 参数
//              * @params参数详情 pageNum 总页数
//              * @params参数详情 length 每页显示条数
//              * @params参数详情 start 起始条数
//              * @params参数详情 draw 请求次数
//              * @return 分页条件下的
//              */
//             Object pNo = cond.get("pageNum");
//             int pageNum, pageSize;
//             // export
//             if (pNo != null && !"NaN".equals(pNo)) {
//                 pageNum = Integer.parseInt(pNo.toString());// 页码
//             } else {
//                 pageNum = 1;
//             }
//             // pageSize=0时不分页
//             pageSize = Integer.parseInt(cond.get("limit").toString());// 模型定义页面要显示数据条数
//             // 例如
//             // 10,20,50,100
//             PageHelper.startPage(pageNum, pageSize);// 开始分页标志（当前页，显示条数）
//
//             List<WlwlUpdate> wlwlBg_lst = wlwlUpdateDao.bianGengWlwlUpdate(cond);
//             pageInfo = new PageInfo(wlwlBg_lst);
//         } catch (Exception e) {
//             e.printStackTrace();
//         }
//
//
//         return pageInfo;
//     }
//
//     @Override
//     public int updateWlwlUpdate(Map<String, Object> cond) {
//         return wlwlUpdateDao.updateWlwlUpdate(cond);
//     }
//
//     @Override
//     public int updateWlwlByUpdate(Map<String, Object> cond) {
//         return wlwlUpdateDao.updateWlwlByUpdate(cond);
//     }
//
//     @Override
//     public int updateWlwlStatusByUpdate(Map<String, Object> cond) {
//         return wlwlUpdateDao.updateWlwlStatusByUpdate(cond);
//     }
//
//     @Override
//     public List<String> getWlwlUpdateWlbmByIds(Map<String, Object> cond) {
//         return wlwlUpdateDao.getWlwlUpdateWlbmByIds(cond);
//     }
//
//     @Override
//     public List<WlwlUpdate> getWlwlUpdateByWlbm(String wlbm) {
//         return wlwlUpdateDao.getWlwlUpdateByWlbm(wlbm);
//     }
//
//     @Override
//     public WlwlUpdate getWlwlUpdateById(String id) {
//         Map<String, Object> cond = new HashMap<>();
//         cond.put("id", id);
//         return wlwlUpdateDao.getWlwlUpdateByCond(cond);
//     }
//
//     @Override
//     public List<WlwlTzlUpdate> getWlwlTzlUpdate(Map<String, Object> cond) {
//         return wlwlTzlUpdateDao.getWlwlTzlUpdate(cond);
//     }
//
//     @Override
//     public boolean insertWlUpdateDataForQcModify(Map<String, Object> cond) {
//         boolean bool = true;
//         //通过存储过程复制物料数据到变更表（物料主表、特征量表等）
//         wlwlUpdateDao.insertWlUpdateDataForQcModify(cond);
//         String msg = (String) cond.get("msg");
//         if ("1".equals(msg)) {
//             //复制附件
//             List<String> wlDrIdLst = toList((String) cond.get("wlDrIds"));
//             for (int i = 0; i < wlDrIdLst.size(); i++) {
//                 //循环处理每一个物料的附件
//                 Map<String, Object> param = new HashMap<>();
//                 param.put("dataId", wlDrIdLst.get(i));
//                 param.put("surveyType", "WL_WL");
//                 List<SysFile> files = sysFileService.queryFileBySurvey(param);
//                 //复制文件(附件表数据复制目前放在存储过程里做，以后可调整)
//                 for (int j = 0; j < files.size(); j++) {
//                     SysFile file = files.get(j);
//                     String fn_old = file.getFileName();//物料文件名带后缀
//                     String ft_old = file.getFileType();//物料文件后缀
//                     //物料变更文件名 =旧文件名+当前时间
//                     String fn_new = fn_old.substring(0, fn_old.indexOf(".")) + "_update";
//                     String oldPath = file.getFilePath();//物料文件存放地址
//                     //物料变更文件存放地址原目录+新文件名
//                     String newPath = oldPath.substring(0, oldPath.indexOf(fn_old)) + fn_new + ft_old;
//                     //复制文件
//                     copyFile(oldPath, newPath);
//                 }
//
//             }
//         } else
//             bool = false;
//         return bool;
//     }
//
//     public void copyFile(String oldPath, String newPath) {
//         try {
//             int bytesum = 0;
//             int byteread = 0;
//             File oldfile = new File(oldPath);
//             if (oldfile.exists()) { //文件存在时
//                 InputStream inStream = new FileInputStream(oldPath); //读入原文件
//                 FileOutputStream fs = new FileOutputStream(newPath);
//                 byte[] buffer = new byte[1024];
//                 while ((byteread = inStream.read(buffer)) != -1) {
//                     bytesum += byteread; //字节数 文件大小
//                     //System.out.println(bytesum);
//                     fs.write(buffer, 0, byteread);
//                 }
//                 inStream.close();
//             }
//         } catch (Exception e) {
//             System.out.println("复制文件错误");
//             e.printStackTrace();
//
//         }
//     }
//
//     @Override
//     public void updateWlWlQc(Map<String, Object> map, String wlTzlUpdStr,
//                              String wlLanUpdStr, HttpServletRequest request) {
//         String id = (String) map.get("id");
//         String lbbm = (String) map.get("lbbm");
//         String wlDrId = (String) map.get("wlDrId");
//         if (!StringUtils.isEmpty(id)) {
//             WlwlUpdate wlwlUpdate = this.getWlwlUpdateById(id);
//             SysUser user = ShiroSessionUtils.getSessionSysUser(ConstantBean.CURRENT_SESSION_USER);
//             map.put("state", "0");
//             map.put("errtext", null);
//             wlwlUpdateDao.updateWlwlUpdate(map);//修改物料变更表数据
//             wlwlTzlUpdateDao.deleteWlwlTzlUpdateByWlUpdateId(id);//先将物料特征量变更表中旧数据删除
//             List<WlwlTzlUpdate> list = this.parseWlTzlUpdateStr(id, lbbm, wlTzlUpdStr);
//             // 把参数手动封装在Map中
//             Map<String, List<WlwlTzlUpdate>> tzlUpd_map = new HashMap<String, List<WlwlTzlUpdate>>();
//             tzlUpd_map.put("wlTzlUpdlist", list);
//             wlwlTzlUpdateDao.batchInsertWlwlTzlUpdate(tzlUpd_map);//将修改后的物料特征量数据写到特征量变更表
//
//             // 附件上传
//             Map<String, Object> Fcond = new HashMap<>();
//             Fcond.put("surveyType", "WL_WL");
//             Fcond.put("surveyName", "WL_WL");
//             Fcond.put("dataId", wlDrId);
//             Fcond.put("updateId", id);
//             // Fcond.put("fileList",result_map.get("fileList"));
//             Fcond.put("operType", request.getParameter("operType"));
//             sysFileUpdateService.insertFileUpdate(request, Fcond);
//             // 删除已上传附件
//             String delFileIds = request.getParameter("delFileIds");
//             if (!StringUtils.isEmpty(delFileIds)) {
//                 List<String> idList = StringUtil.split(delFileIds, ",");
//                 Map<String, Object> file_cond = new HashMap<>();
//                 file_cond.put("ids", idList);
//                 List<SysFileUpdate> sFileUpdate = sysFileUpdateService.queryFileUpdateByCond(file_cond);
//                 sysFileUpdateService.delFileUpdateByPath(sFileUpdate);
//             }
//
//         }
//     }
//
//     /**
//      * 解析导入物料特征量数据拼接成的字符串
//      *
//      * @param
//      * @return 导入物料特征量数据对象集合
//      * @author hanxg
//      * @date 2013-8-26
//      */
//     private List<WlwlTzlUpdate> parseWlTzlUpdateStr(String wlUpdId, String lbbm,
//                                                     String wlTzlUpdStr) {
//         List<WlwlTzlUpdate> list = new ArrayList<WlwlTzlUpdate>();
//         StringTokenizer stk = new StringTokenizer(wlTzlUpdStr, "⊙");
//         // int i = 1;
//         while (stk.hasMoreElements()) {
//             String mxinfostr = (String) stk.nextElement();
//             StringTokenizer mxstk = new StringTokenizer(mxinfostr, "⊥");
//             String tzlmc = mxstk.nextToken().trim();
//             String wlLbmbtzlId = mxstk.nextToken().trim();
//             String xh = mxstk.nextToken().trim();
//             String qzfhId = mxstk.nextToken().trim();
//             String qzfh = mxstk.nextToken().trim();
//             String tzlzId = this.returnTzlId(mxstk.nextToken().trim());
//             String tzlz = mxstk.nextToken().trim();
//             String hzfhId = mxstk.nextToken().trim();
//             String hzfh = mxstk.nextToken().trim();
//             String jldwId = mxstk.nextToken().trim();
//             String jldw = mxstk.nextToken().trim();
//             String ljfhId = mxstk.nextToken().trim();
//             String ljfh = mxstk.nextToken().trim();
//             // String tzlz_en = mxstk.nextToken().trim();
//             WlwlTzlUpdate tzlUpd = new WlwlTzlUpdate();
//             tzlUpd.setWlUpdateId(wlUpdId);
//             tzlUpd.setXh(Integer.parseInt(xh));
//             tzlUpd.setLbbm(lbbm);
//             tzlUpd.setTzlmc(tzlmc);
//             tzlUpd.setWlLbmbtzlId(wlLbmbtzlId);
//             tzlUpd.setQzfhId(qzfhId);
//             tzlUpd.setQzfh(qzfh);
//             tzlUpd.setTzlzId(tzlzId);
//             tzlUpd.setTzlz(tzlz);
//             tzlUpd.setHzfhId(hzfhId);
//             tzlUpd.setHzfh(hzfh);
//             if ("? undefined:undefined ?".equals(jldwId)) {
//                 tzlUpd.setJldwId("");
//             } else {
//                 tzlUpd.setJldwId(jldwId);
//             }
//
//             tzlUpd.setJldw(jldw);
//             if ("? undefined:undefined ?".equals(ljfhId)) {
//                 tzlUpd.setLjfhId("");
//             } else {
//                 tzlUpd.setLjfhId(ljfhId);
//             }
//             tzlUpd.setLjfh(ljfh);
//             // tzlDr.setTzlz_en(tzlz_en);
//             tzlUpd.setStatus("1");
//             list.add(tzlUpd);
//             // i++;
//         }
//         return list;
//     }
//
//     /**
//      * 修改前台传来的tzlid为乱码
//      *
//      * @param tzlId
//      * @return
//      */
//     private String returnTzlId(String tzlId) {
//         String tzlIdStr = "";
//         if (!StringUtils.isEmpty(tzlId)) {
//             Pattern p = Pattern.compile("^[0-9]{8}$");
//             Matcher m = p.matcher(tzlId);
//             if (m.matches()) {
//                 tzlIdStr = tzlId;
//             }
//         }
//         return tzlIdStr;
//     }
//
//     public List<String> toList(String array) {
//         ArrayList<String> list = new ArrayList<String>();
//         if (array != null) {
//             for (String string : array.split(",")) {
//                 list.add(string);
//             }
//         }
//         return list;
//     }
//
//     @Override
//     public String wlQcUpdateCheckout(Map<String, Object> map) {
//         wlwlUpdateDao.wlQcUpdateCheckout(map);
//         String msg = (String) map.get("msg");
//         return msg;
//     }
//
//     @Override
//     public String wlQcUpdatePass(Map<String, Object> map) {
//         wlwlUpdateDao.wlQcUpdatePass(map);
//         String msg = (String) map.get("msg");
//         return msg;
//     }
//
//     @Override
//     public List<String> getWlwlUpdateIdByWlDrId(String wldrid) {
//         return wlwlUpdateDao.getWlwlUpdateIdByWlDrId(wldrid);
//     }
//
//     @Override
//     public String getMaxUpdIdByWlDrId(String wldrid) {
//         return wlwlUpdateDao.getMaxUpdIdByWlDrId(wldrid);
//     }
//
//     @SuppressWarnings({"unchecked", "rawtypes"})
//     @Override
//     public PageInfo getWlwlUpdatePageByWlbm(Map<String, Object> map) {
//         PageInfo<List<WlwlUpdate>> pageInfo = null;
//         try {
//             Object pNo = map.get("pageNum");
//             int pageNum, pageSize;
//             // export
//             if (pNo != null && !"NaN".equals(pNo)) {
//                 pageNum = Integer.parseInt(pNo.toString());// 页码
//             } else {
//                 pageNum = 1;
//             }
//             // pageSize=0时不分页
//             pageSize = Integer.parseInt(map.get("limit").toString());// 模型定义页面要显示数据条数
//             // 例如
//             // 10,20,50,100
//             PageHelper.startPage(pageNum, pageSize);// 开始分页标志（当前页，显示条数）
//             String wlbm = (String) map.get("wlbm");
//             List<WlwlUpdate> list = wlwlUpdateDao.getWlwlUpdateByWlbm(wlbm);
//             pageInfo = new PageInfo(list);
//         } catch (Exception e) {
//             e.printStackTrace();
//         }
//         return pageInfo;
//     }
//
// }
